<?php
	/**
	 * Min klass LOGIN VIEW skriver ut allting som användaren ska se. 
	 * Och den hanterar indatan.
	 */
 
	class LoginView {
		// Skapar privata variabler för att undvika "strängberoenden".
		private $getRememberMe = 'RememberMe';	
		private $getUsername = 'myUsername';
		private $getPassword = 'myPassword';
		private $logIn = 'logIn';
		private $logOut = 'logOut';
		private $cookieLocationUsername = 'cookieLocationUsername';
		private $cookieLocationPassword = 'cookieLocationPassword';
		
		// Initierar konstanter som används till att skriva ut meddelanden.
		const EMPTY_MESSAGE = 0;
		const WRONG_PASSWORD_N_USER = 1;
		const SUCCESS_LOGGIN = 2;
		const USER_IS_LOGGED_IN = 3;
		const USER_LOGS_OUT = 4;
		
		
		//----- FUNKTION: MESSAGE ------------------------------------------------------------------------------------------------------------------	
		/**
		* Funktion för att hantera meddelanderna. 
		* @param int $message innehåller information om vilket meddelande som ska skrivas ut.
		* @return string meddelandet
		*/
		public function MessageHolder($message) {
			switch ($message) {
				case self::EMPTY_MESSAGE:
					$message = "";					
					break;
					
				case self::WRONG_PASSWORD_N_USER:
					$message = "<p class='errorMessage'>Fel användarnamn eller lösenord!</p>";					
					break;
				
				case self::SUCCESS_LOGGIN:
					$message = "<p class='errorMessage'>Inloggning lyckades!</p>";					
					break;
					
				case self::USER_IS_LOGGED_IN:
					$message = "<p class='errorMessage'>Inloggad</p>";					
					break;
					
				case self::USER_LOGS_OUT:
					$message = "<p class='errorMessage'>Utloggad</p>";					
					break;				
				
				default:					
					break;
			}return $message;
			
		}
		
		
		//----- FUNKTION: CREATE LOG IN BOX ---------------------------------------------------------------------------------------------------------	
		/**
		* Skapar "inloggingsformuläret"
		* @param int $message innehåller information om vilket meddelande som ska skrivas ut.
		* @return string formuläret
		*/
		public function CreateLoginBox($message) {
			 
			 $message = $this -> MessageHolder($message);
			 
			 return "
			 $message
			 	<div id='loginContainerBox'>
	 				<div id='loginErrorMessage'>
	 				</div>
	 				
	 				<div id='notLoggedInMessage'>
	 				</div>
	 				
	 				<form id='loginForm'>			 			
	 						<legend>Logga in</legend>
				 			
				 			<div id='loginInput'>
				 				
				 				<div id='user'>
					 				<lable for='myUsername'>Anv&auml;ndarnamn: </lable>
						 			<input name='myUsername' type='text' id='myUsername' class='orig'>
					 			</div>

					 			<div id='pass'>
					 				<lable for='myPassword'>L&ouml;senord: </lable>					 			
					 				<input name='myPassword' type='password' id='myPassword' class='orig'>				 			
				 				</div>

				 				<div id='rememb'>					 				
									<p class='remembP'>Kom h&aring;g mig!</p><div id='check'><input type='checkbox' name='RememberMe' id='RememberMe' value='checkbox'></div>
					 			</div>

					 			<input id='logIn' name='logIn' type='submit' value='Logga in' class='enabled'>

				 			</div>			 		
	 				</form>
	 			</div>
			 ";
		}
		
		
		//----- FUNKTION: CREATE LOG OUT BOX ------------------------------------------------------------------------------------------------------- 
		/**
		* Skapar "utloggingsformuläret"
		* @param int $message innehåller information om vilket meddelande som ska skrivas ut.
		* @return string formuläret
		*/
		public function CreateLogoutBox($message) {
				
			$message = $this -> MessageHolder($message);			
			
			return "
			$message
				<div id='loginContainerBox'>
		 			<form id='logoutForm' >
		 				<legend>Logga ut</legend>
						<input  id='logout' name='logOut' type='submit' value='Logga ut' class='enabled2'>		 							
	 				</form>
 				</div>
 			";		 
		}
		
		
		//----- FUNKTION: GET REMEMBER ME ---------------------------------------------------------------------------------------------------------- 
		/**
		* Funktion för att kontrollera om användaren vill bli ihågkommen. 
		* @return bool 
		*/
		public function GetRememberMe() {
			
			if (isset($_GET[$this -> getRememberMe])) {					
				return true;	 
				
			} else {
				return false;
			}		 
		}
		
		
		//----- FUNKTION: GET USER NAME ------------------------------------------------------------------------------------------------------------ 
		/**
		* Funktion för att hämta användarnamn antingen via formulär eller via COOKIES.
		* @return string/bool retunerar användarnamnet om ett sådant finns. Annars retuneras false. 
		*/
		public function GetUserName() {
			
			if (isset($_GET[$this -> getUsername])) {					
				return $_GET[$this -> getUsername];	 
				
			} else if(isset($_COOKIE[$this -> cookieLocationUsername])){
				return $_COOKIE[$this -> cookieLocationUsername];
			}		 
			return false;
		}
		
		
		//----- FUNKTION: GET PASSWORD ------------------------------------------------------------------------------------------------------------- 
		/**
		* Funktion för att hämta lösenord antingen via formulär eller via COOKIES.
		* @return string/bool retunerar lösenordet om ett sådant finns. Annars retuneras false. 
		*/
		public function GetPassword() {
			
			if (isset($_GET[$this -> getPassword])) {					
				return $_GET[$this -> getPassword];	 
				
			} else if(isset($_COOKIE[$this -> cookieLocationPassword])){
				return $_COOKIE[$this -> cookieLocationPassword];
			}
			return false;
		}
		
		
		//----- FUNKTION: TRIED TO LOG IN ---------------------------------------------------------------------------------------------------------- 
		/**
		* Funktion för att kontrollera om användaren vill logga in, antingen via formuläret eller via COOKIES.
		* @return bool
		*/
		public function TriedToLogIn() {

			if (isset($_GET[$this -> logIn])){
				return true;
				
			} else if ($this -> RaidersOfTheLostCookie()) {
				return true;
			}
			return false;				
		}	
		
		
		//----- FUNKTION: TRIED TO LOG OUT ---------------------------------------------------------------------------------------------------------
		/**
		* Funktion för att kontrollera om användaren vill logga ut, tar även bort COOKIES genom att anropa funktionen COOKIE MONSTER.
		* @return bool
		*/
		public function TriedToLogOut() {
		 
			if (isset($_GET[$this -> logOut])){
				$this -> CookieMonster();
				return true;
			}
			return false;		
		}
		
		
		//----- FUNKTION: REMEMBER ME --------------------------------------------------------------------------------------------------------------
		/**
		* Funktion som sparar användarens användarnamn och lösenord i COOKIES. Giltighetstiden på COOKIES sätts till 30dagar.
		* @param string $userName användarnamnet som ska sparas
		* @param string $password lösenordet som ska sparas
		*/
		public function RememberMe($userName, $password) {
			
			setcookie($this -> cookieLocationUsername, $userName, time()+60*60*24*30, '/');
			$_COOKIE[$this -> cookieLocationUsername] = $userName;
			
			setcookie($this -> cookieLocationPassword, $password, time()+60*60*24*30, '/');
			$_COOKIE[$this -> cookieLocationPassword] = $password;
		}
		
		
		//----- FUNKTION: RAIDERS OF THE LOST COOKIE -----------------------------------------------------------------------------------------------
		/**
		* Funktion för att kontrollera om COOKIES är satta. Om det ligger något på cookieLocation-platserna.
		* @return bool
		*/
		public function RaidersOfTheLostCookie() {
			
			if(isset($_COOKIE[$this -> cookieLocationUsername]) && isset($_COOKIE[$this -> cookieLocationPassword])){
				return true;
			} else {
				return false;
			}			
		}
		
		
		//----- FUNKTION: COOKIE MONSTER -----------------------------------------------------------------------------------------------------------
		/**
		* Funktion för att ta bort COOKIES. 
		* Vi sätter tiden till ett negativt värde vilket resulterar i att "giltighetstiden" för COOKIES har gått ut när funktionen har gått igenom.
		*/
		public function CookieMonster() {
			
			if(isset($_COOKIE[$this -> cookieLocationUsername])){
				setcookie($this -> cookieLocationUsername, '', time()-320, '/');
				$_COOKIE[$this -> cookieLocationUsername] = '';
			}
			
			if(isset($_COOKIE[$this -> cookieLocationPassword])){
				setcookie($this -> cookieLocationPassword, '', time()-320, '/');
				$_COOKIE[$this -> cookieLocationPassword] = '';
			}
		}		
	 }
?>